package br.com.j7.jdesk.persistence.repository;

import java.util.List;

import br.com.j7.jdesk.library.exception.RepositoryException;
import br.com.j7.jdesk.persistence.entity.Enterprises;
import br.com.j7.jdesk.persistence.entity.ServicesTypes;

/**
 * Interface para a entidade {@link ServicesTypes} 
 * 
 * @author Edivando Alves
 *
 */
public interface ServiceTypeRepository extends Repository<ServicesTypes>{

	/**
	 * Obtem uma entidade {@link ServicesTypes} por cdServiceType e por {@link Enterprises}
	 * 
	 * @param cdServiceType String
	 * @param enterprise {@link Enterprises}
	 * @return {@link ServicesTypes}
	 * @throws RepositoryException
	 */
	public ServicesTypes findByServiceTypeAndEnterprise(String cdServiceType, Enterprises enterprise) throws RepositoryException;
	
	/**
	 * Obtem uma {@link List} de {@link ServicesTypes} por {@link Enterprises}
	 * 
	 * @param enterprise {@link Enterprises}
	 * @return {@link List} of {@link ServicesTypes}
	 * @throws RepositoryException
	 */
	public List<ServicesTypes> listByEnterprise(Enterprises enterprise) throws RepositoryException;
	
	/**
	 * Obtem uma {@link List} de {@link ServicesTypes} filhos de uma entidade serviceType.
	 * @param idServiceTypePai {@link Integer}
	 * @param enterprises {@link Enterprises}
	 * @return {@link List} of {@link ServicesTypes}
	 */
	public List<ServicesTypes> listByIdServiceTypePaiAndEnterprise( Integer idServiceTypePai, Enterprises enterprise ) throws RepositoryException ;
}
